/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.bld.model.plano;

import br.com.bld.util.dominio.SituacaoRegistro;
import br.com.bld.util.facade.BLDDataErro;

/**
 *
 * @author Pedro
 */
public class PlanoEntity implements BLDDataErro {

    public static final String CLASS_ID = "PlanoEntity";

    private String descPlano;                   //character varying(500) NOT NULL,
    private Double preco;                       //real NOT NULL,
    private SituacaoRegistro situacaoPlano;    //integer NOT NULL,

    private static final String CAMPO_DESC_PLANO = "Descrição do Plano";
    private static final String CAMPO_PRECO = "Preço";
    private static final String CAMPO_SITUACAO_PLANO = "Situação do Plano";

    /**
     * @return the descPlano
     */
    public String getDescPlano() {
        return descPlano;
    }

    /**
     * @param descPlano the descPlano to set
     */
    public void setDescPlano(String descPlano) {

        if (descPlano == null) {
            throw new IllegalArgumentException(String.format(CAMPO_OBRIGATORIO, CAMPO_DESC_PLANO));
        }
        if (descPlano.length() > 500) {
            throw new IllegalArgumentException(String.format(TAMANHO_MAX_MAIOR));
        }

        this.descPlano = descPlano;
    }

    /**
     * @return the preco
     */
    public Double getPreco() {
        return preco;
    }

    /**
     * @param preco the preco to set
     */
    public void setPreco(Double preco) {

        if (preco == null) {
            throw new IllegalArgumentException(String.format(CAMPO_OBRIGATORIO, CAMPO_DESC_PLANO));
        }
        if (preco < 0) {
            throw new IllegalArgumentException(VALOR_NAO_PERMITIDO);
        }

        this.preco = preco;
    }

    /**
     * @return the situacao_plano
     */
    public SituacaoRegistro getSituacaoPlano() {
        return situacaoPlano;
    }

    /**
     * @param situacaoPlano the situacao_plano to set
     */
    public void setSituacaoPlano(SituacaoRegistro situacaoPlano) {

        if (preco == null) {
            throw new IllegalArgumentException(String.format(CAMPO_OBRIGATORIO, CAMPO_SITUACAO_PLANO));
        }
        if (!preco.equals(SituacaoRegistro.ATIVO) || !preco.equals(SituacaoRegistro.INATIVO)) {
            throw new IllegalArgumentException(VALOR_NAO_PERMITIDO);
        }

        this.situacaoPlano = situacaoPlano;
    }

}
